7.2.1 容器vs虚拟机

容器和虚拟机都依赖于宿主机才能运行。宿主机可以是笔记本,是数据中心的物理服务器,也可以是公有云的某个实例。在下面的示例中,假设宿主机是一台需要运行4个业务应用的物理服务器。

在虚拟机模型中,首先要开启物理机并启动Hypervisor引导程序(本书跳过了BIOS和Bootloader代码等)。一旦Hypervisor启动,就会占有机器上的全部物理资源,如CPU、RAM、存储和NIC。Hypervisor接下来就会将这些物理资源划分为虚拟资源,并且看起来与真实物理资源完全一致。然后Hypervisor会将这些资源打包进一个叫作虚拟机(VM)的软件结构当中。这样用户就可以使用这些虚拟机,并在其中安装操作系统和应用。前面提到需要在物理机上运行4个应用,所以在Hypervisor之上需要创建4个虚拟机并安装4个操作系统,然后安装4个应用。当操作完成后,结构如图7.2所示。

33.png

图7.2 运行4个业务应用的物理服务器

而容器模型则略有不同。

服务器启动之后,所选择的操作系统会启动。在Docker世界中可以选择Linux,或者内核支持内核中的容器原语的新版本Windows。与虚拟机模型相同,OS也占用了全部硬件资源。在OS层之上,需要安装容器引擎(如Docker)。容器引擎可以获取 系统资源 ,比如进程树、文件系统以及网络栈,接着将资源分割为安全的互相隔离的资源结构,称之为容器。每个容器看起来就像一个真实的操作系统,在其内部可以运行应用。按照前面的假设,需要在物理机上运行4个应用。因此,需要划分出4个容器并在每个容器中运行一个应用,如图7.3所示。

34.png

图7.3 划分4个容器

从更高层面上来讲,Hypervisor是 硬件虚拟化(Hardware Virtualization) ——Hypervisor将硬件物理资源划分为虚拟资源;另外,容器是 操作系统虚拟化(OS Virtualization) ——容器将系统资源划分为虚拟资源。

results matching ""

    No results matching ""